/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package dao;

import dao.generic.GenericDAO;
import java.util.Iterator;
import java.util.List;
import modelo.Grupo;
import modelo.Sustrato;
import org.hibernate.HibernateException;
import org.hibernate.Query;

/**
 *
 * @author Administrador
 */
public class GrupoDAO extends GenericDAO {

  public Grupo getGropoByID(int idGrupo) {
    Grupo g = null;
    try {
      iniciarOperacion();
      g = (Grupo) sesion.get(Grupo.class, idGrupo);


    } finally {
      sesion.close();
    }
    return g;
  }
  public Grupo getGrupoByToGrupo(String grupo){
    Grupo g =null;
    try{
      iniciarOperacion();
      Query query = sesion.createQuery("from Grupo where grupo = :idGrupo");
      query.setParameter("idGrupo", grupo);
      g = (Grupo) query.uniqueResult();
    }
    finally{
      sesion.close();
    }
    return g;
  }
   public Sustrato getSustratoByGrupo(String idGrupo) {
    Sustrato s = null;
    try {
      iniciarOperacion();
      Query query = sesion.createQuery("select sustrato from Grupo where grupo = :idGrupo");
      s = (Sustrato) query.uniqueResult();
    } finally {
      sesion.close();
    }
    return s;
  }

//  public void addGrupoSensorToGrupo(int idGrupo, int idGrupoSensor) throws HibernateException {
//    Grupo g = null;
//    try {
//      iniciarOperacion();
//      g = (Grupo) sesion.get(Grupo.class, idGrupo);
//      Sensor gs = (Sensor) sesion.get(Sensor.class, idGrupoSensor);
//      g.getGrupoSensor().add(gs);
//
//      sesion.getTransaction().commit();
//    } finally {
//      sesion.close();
//    }
//  }

  public List consultaTodo() {
    List listGrupos = null;
    try {
      iniciarOperacion();
      Query query = sesion.createQuery("FROM Grupo");
      listGrupos = query.list();
        
    } finally {
      sesion.close();
    }
    return listGrupos;
  }
  public String grupos(){
    List listGrupos;
    String grupos = "";
    char [] g;
    try{
      iniciarOperacion();
      Query query = sesion.createQuery("SELECT grupo FROM Grupo");
      listGrupos = query.list();
      for(Object l: listGrupos){
       char grupo = (Character) l;
       grupos+=grupo;
     }
    }
    finally{
      sesion.close();
    }
    return grupos;
  }
    public Iterator conjutoGrupo(String grupoIni){
    List listGrupos;
    Iterator i=null;
    String grupos="";
    char c = grupoIni.charAt(0);
    try{
      iniciarOperacion();
      Query query = sesion.createQuery("select grupo,sustrato from Grupo where sustrato in(SELECT sustrato FROM Grupo where grupo = :grupo)");
      query.setParameter("grupo", c);
      i = query.iterate();
      System.out.println("se han obtenido los grupos");
      
    }catch(HibernateException e){
      manejarExcepcion(e);
    }
    return i;
 
  }
    public void cerrarSesionBeforeIterator(){
      if(sesion.isOpen()){
        System.out.println("Se encuentra abierta la sesion");
        sesion.close();
      }
      else
        System.out.println("No hay sesion abierta");
    }
}
